package com.project.mapper;

import com.project.bean.EmployeeBean;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface IEmployeeMapper {
    /**
     * 添加员工
     *
     * @param employeeBean 员工对象
     */
    public void add(EmployeeBean employeeBean);

    /**
     * 员工离职，修改状态为离职
     *
     * @param id 员工id
     */
    public void updateStatus(Integer id);

    /**
     * 员工正在进行的项目，完成日期修改为当前日期
     *
     * @param id      员工id
     * @param nowDate 当前时间
     */
    public void updateFinnishDate(@Param("id") Integer id, @Param("nowDate") String nowDate);

    /**
     * 根据员工id修改工资和电话
     *
     * @param id        员工id
     * @param newWages 新工资
     * @param newPhone  新电话
     */
    public void updateSalaryPhone(@Param("id") Integer id, @Param("newWages") int newWages, @Param("newPhone") String newPhone);

    /**
     * 根据员工id，查询当前员工信息
     * 同时查询员工参与项目信息。
     * 进度信息中需要包含项目的名称
     *
     * @param id 员工id
     * @return 员工对象
     */
    public EmployeeBean findById(Integer id);

    /**
     * 动态条件分页查询员工信息
     *
     * @param name      姓名
     * @param specialty 专长
     * @param status    状态
     * @param order     排序规则
     * @return 员工分页对象
     */
    public List<EmployeeBean> cutPageFindByItem(@Param("name") String name, @Param("expertise") String specialty,
                                             @Param("status") String status, @Param("order") String order);

    /**
     * 按姓名、专长，动态条件查询在职（固定条件），同时查询没有参与项目员工信息
     *
     * @param id        项目id（固定条件）
     * @param specialty 专长
     * @param name      员工名字
     * @return 员工集合
     */
    public List<EmployeeBean> findByItem(@Param("id") Integer id, @Param("specialty") String specialty, @Param("name") String name);

    /**
     * 在职员工详细信息
     * 根据员工id，查询当前员工信息，查询员工正在进行项目信息
     *
     * @param id 员工id
     * @return 员工对象
     */
    public EmployeeBean findByStaffId(Integer id);
}
